Python Inner Classes
একটি অভ্যন্তরীণ শ্রেণী হল অন্য শ্রেণীর ভিতরে সংজ্ঞায়িত একটি শ্রেণী। অভ্যন্তরীণ শ্রেণীটি বাইরের শ্রেণীর বৈশিষ্ট্য এবং পদ্ধতিগুলি অ্যাক্সেস করতে পারে।
অভ্যন্তরীণ ক্লাসগুলি কেবলমাত্র এক জায়গায় ব্যবহৃত ক্লাসগুলিকে গোষ্ঠীবদ্ধ করার জন্য উপযোগী, যা আপনার কোডকে আরও সংগঠিত রাখতে সাহায্য করে৷
উদাহরণ
অভ্যন্তরীণ ক্লাস তৈরি করুন:
class Outer:
def __init__(self):
self.name = "Outer Class"
class Inner:
def __init__(self):
self.name = "Inner Class"
def display(self):
print("This is the inner class")
outer = Outer()
print(outer.name)
বাইরে থেকে একটি অভ্যন্তরীণ ক্লাস অ্যাক্সেস করা
অভ্যন্তরীণ শ্রেণীতে প্রবেশ করতে, বাইরের শ্রেণীর একটি বস্তু তৈরি করুন, তারপর অভ্যন্তরীণ শ্রেণীর একটি বস্তু তৈরি করুন:
উদাহরণ
ভিতরের ক্লাস অ্যাক্সেস করুন এবং একটি বস্তু তৈরি করুন:
class Outer:
def __init__(self):
self.name = "Outer"
class Inner:
def __init__(self):
self.name = "Inner"
def display(self):
print("Hello from inner class")
outer = Outer()
inner = outer.Inner()
inner.display()
দ্রষ্টব্য:
আপনি এইভাবে অভ্যন্তরীণ ক্লাস অ্যাক্সেস করতে পারেন:outer_instance.Inner(). এটি অভ্যন্তরীণ শ্রেণীর একটি বস্তু তৈরি করে।
একটি অভ্যন্তরীণ শ্রেণী থেকে একটি বহিরাগত ক্লাস অ্যাক্সেস করা
পাইথন স্বয়ংক্রিয়ভাবে অভ্যন্তরীণ ক্লাসের জন্য বাইরের ক্লাস ইনস্ট্যান্স অ্যাক্সেস নেই।
যদি অভ্যন্তরীণ শ্রেণীটি বাইরের শ্রেণীতে প্রবেশ করতে চায়, তবে বাইরের শ্রেণীর উদাহরণটি একটি প্যারামিটার হিসাবে পাস করতে হবে:
উদাহরণ
বাইরের ক্লাস ইভেন্টটি ভিতরের ক্লাসে পাস করুন:
class Outer:
def __init__(self):
self.name = "Emil"
class Inner:
def __init__(self, outer):
self.outer = outer
def display(self):
print(f"Outer class name: {self.outer.name}")
outer = Outer()
inner = outer.Inner(outer)
inner.display()
গুরুত্বপূর্ণ:
পাইথনের অভ্যন্তরীণ ক্লাসগুলি স্বয়ংক্রিয়ভাবে বাইরের শ্রেণীর বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারে না। বাইরের ক্লাসের উদাহরণ অবশ্যই স্পষ্টভাবে পাস করতে হবে।
একটি বাস্তব উদাহরণ
অভ্যন্তরীণ ক্লাসগুলি সাহায্যকারী ক্লাস তৈরি করার জন্য দরকারী যা শুধুমাত্র বাইরের শ্রেণীর প্রসঙ্গে ব্যবহৃত হয়:
উদাহরণ
গাড়ির ইঞ্জিনের প্রতিনিধিত্ব করতে একটি অভ্যন্তরীণ শ্রেণী ব্যবহার করুন:
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
self.engine = self.Engine()
class Engine:
def __init__(self):
self.status = "Off"
def start(self):
self.status = "Running"
print("Engine started")
def stop(self):
self.status = "Off"
print("Engine stopped")
def drive(self):
if self.engine.status == "Running":
print(f"Driving the {self.brand} {self.model}")
else:
print("Start the engine first!")
car = Car("Toyota", "Corolla")
car.drive()
car.engine.start()
car.drive()
অনেক অভ্যন্তরীণ ক্লাস
একটি ক্লাসের একাধিক অভ্যন্তরীণ ক্লাস থাকতে পারে:
উদাহরণ
একাধিক অভ্যন্তরীণ ক্লাস তৈরি করুন:
class Computer:
def __init__(self):
self.cpu = self.CPU()
self.ram = self.RAM()
class CPU:
def process(self):
print("Processing data...")
class RAM:
def store(self):
print("Storing data...")
computer = Computer()
computer.cpu.process()
computer.ram.store()
আরো উদাহরণ
উদাহরণ
কলেজ ছাত্র অভ্যন্তরীণ ক্লাস:
class University:
def __init__(self, name):
self.name = name
self.departments = []
class Department:
def __init__(self, dept_name):
self.dept_name = dept_name
self.students = []
def add_student(self, student_name):
self.students.append(student_name)
print(f"Added {student_name} to {self.dept_name}")
uni = University("ABC University")
cs_dept = uni.Department("Computer Science")
cs_dept.add_student("John")
cs_dept.add_student("Jane")
উদাহরণ
ওটাল ইনার ক্লাস:
class Hotel:
def __init__(self, name):
self.name = name
class Room:
def __init__(self, room_number, room_type):
self.room_number = room_number
self.room_type = room_type
self.is_occupied = False
def book(self):
self.is_occupied = True
print(f"Room {self.room_number} booked")
hotel = Hotel("Grand Plaza")
room101 = hotel.Room(101, "Suite")
room101.book()
মূল পয়েন্ট
প্রান্তিককরণ
অভ্যন্তরীণ ক্লাসগুলি কোডকে আরও সংগঠিত করে সম্পর্কিত ক্লাসগুলিকে একসাথে রাখতে সহায়তা করে।
ওরিয়েন্টেশন
অভ্যন্তরীণ শ্রেণীগুলি শুধুমাত্র একটি প্রেক্ষাপটে ব্যবহৃত ক্লাসগুলির সাথে মিলে যায়৷
প্রক্রিয়াকরণ
অভ্যন্তরীণ শ্রেণীগুলি স্বয়ংক্রিয়ভাবে বাইরের শ্রেণীর বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারে না; স্পষ্টভাবে পাঠাতে হবে।
পরামর্শ:
ছোট, বিচ্ছিন্ন কার্যকরী ইউনিট তৈরি করতে অভ্যন্তরীণ শ্রেণীগুলি ব্যবহার করুন যা শুধুমাত্র বাইরের শ্রেণীর প্রসঙ্গে দরকারী।